package com.ruoyi.worker.mapper;

import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.worker.domain.*;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * 功能描述：
 *
 * @Classname TermWorkerMapper
 * @Description TODO
 * @Date 2021/11/8 14:42
 * @Created by 刘松山
 */
@Mapper
public interface TermWorkerMapper {
    /**
     * 查询【长期工】
     *
     * @param id 【长期工】主键
     * @return 【长期工】
     */
    public TermWorker selectTermWorkerById(Long id);

    /**
     * 查询【长期工】列表
     *
     * @param termWorker 【长期工】
     * @return 【长期工】集合
     */
    public List<TermWorker> selectTermWorkerList(TermWorker termWorker);

    /**
     * 新增【长期工】
     *
     * @param termWorker 【长期工】
     * @return 结果
     */
    public int insertTermWorker(TermWorker termWorker);
    /**
     *
     * 功能描述:批量保存
     * @Date 2021/11/9 13:19
     * @param
     * @param list
     * @return int
     * @author admin
     */
    int addTermWorkerList(List<TermWorkerExcel> list);

    /**
     * 修改【长期工】
     *
     * @param termWorker 【长期工】
     * @return 结果
     */
    public int updateTermWorker(TermWorker termWorker);
    /**
     *
     * 功能描述:批量修改 根据身份证
     * @Date 2021/11/9 13:20
     * @param
     * @param list
     * @return int
     * @author admin
     */
    int updateTermWorkerList(List<TermWorkerExcel> list);

    /**
     * 删除【长期工】
     *
     * @param id 【长期工】主键
     * @return 结果
     */
    public int deleteTermWorkerById(Long id);

    /**
     * 批量删除【长期工】
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTermWorkerByIds(Long[] ids);
    /**
     *
     * 功能描述:查询组织结构列表
     * @Date 2021/11/8 16:38
     * @param 
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @author admin
     */
    List<SysDept> listDept();
   /**
    *
    * 功能描述:查询身份证是否已经存在
    * @Date 2021/11/9 10:34
    * @param
    * @param termWorker
    * @return int
    * @author admin
    */
   int  countTermWorker(TermWorker termWorker );
   /**
    *
    * 功能描述:添加长期工入职离职流水
    * @Date 2021/11/9 10:45
    * @param 
    * @param termWorker
    * @return int
    * @author admin
    */
   int  addTermWorkerLog(TermWorker termWorker);
    /**
     *
     * 功能描述:批量保存长期工入职离职流水
     * @Date 2021/11/9 13:20
     * @param
     * @param list
     * @return int
     * @author admin
     */
    int  addTermWorkerLogList(List<TermWorkerLog> list);

    /**
     * 查询字典数据
     *
     * @param
     * @return 字典数据集合信息
     */
    public List<SysDictData> selectDictDataList();
    /**
     *
     * 功能描述:查询长期工在职离职流水
     * @Date 2021/11/9 14:18
     * @param
     * @param idCard
     * @return java.util.List<com.ruoyi.worker.domain.TermWorker>
     * @author admin
     */
    List<TermWorker> selelctTermWorkerLogList(String idCard);
    /**
     *
     * 功能描述:修改为黑名单
     * @Date 2021/11/9 15:32
     * @param
     * @param ids
     * @return int
     * @author admin
     */
    int  updateWorkStatus(Long[] ids);

    /**
     * 更新长期工黑名单状态
     * @param id:员工id
     * @param status:状态 {@link TermWorker}
     * @return int
     * @author Hush.
     * @since 2021/12/15 15:13
     */
    @Update("update term_worker set status =#{status} where id = #{id}")
    int updateWorkerStatus(@Param("id") Long id,@Param("status") Integer status);

    /**
     *
     * 功能描述:保存长期工照片
     * @Date 2021/11/9 21:23
     * @param
     * @param termWorkerImg
     * @return int
     * @author admin
     */
    int addTermWorkerImg(TermWorkerImg termWorkerImg);
    /**
     *
     * 功能描述:删除长期工照片
     * @Date 2021/11/9 21:26
     * @param
     * @param termWorkerImg
     * @return int
     * @author admin
     */
     int deleteTermWorkerImg(TermWorkerImg termWorkerImg);
     /**
      * 功能描述:保存黑名单
      * @Date 2021/11/9 23:08
      * @param
      * @param list
      * @return int
      * @author admin
      */
     /**
      *
      * @param beau:员工对象
      * @return
      * @author Hush.
      * @since 2021/12/15 15:05
      */
     int addBlackList(RzBlockWorker beau);
     /**
      *
      * 功能描述:保存长期工考勤组信息
      * @Date 2021/11/12 17:38
      * @param
      * @return int
      * @author 刘松山
      */
     int addTermWorkerGroup( List<Map<String,Object>> list);
     /**
      *
      * 功能描述:根据身份证删除考勤组
      * @Date 2021/11/13 21:55
      * @param
      * @param idCard
      * @return int
      * @author 刘松山
      */
     int deleteTermWorkerGroup(String idCard);
     /**
      *
      * 功能描述:excel 导入时 批量删除
      * @Date 2021/11/15 16:50
      * @param
      * @param idCardList
      * @return int
      * @author 刘松山
      */
     int deleteBatchTermWorkerGroup(List<String> idCardList);
     /**
      *
      * 功能描述:根据身份证获取考勤组
      * @Date 2021/11/13 22:12
      * @param
      * @param idCard
      * @return java.util.List<Stirng>
      * @author 刘松山
      */
     List<Long> getAttendanceGroup(String idCard);

     /**
      *
      * 功能描述:根据长期工id删除其考勤组
      * @Date 2021/11/17 17:48
      * @param
      * @param ids
      * @return int
      * @author 刘松山
      */
     int  deleteBatchTermWorkerGroupByWorkerId(Long[] ids);
     /**
      * @description:  记录删除长期工信息
      * @author 刘松山
      * @date 2021/11/29 13:22
      *
      */
     int addDeleteBatchTermWorker(Long[] ids);


    /**
     * 根据身份证号码获取主键id
     * @param idCard 身份证号码
     * @return 主键id
     */
     Long selectTermWorkerIdByIdCard(String idCard);

    /**
     * 检索黑名单用户
     *
     * @param workerId:   员工id
     * @param workerType: 类型
     * @return RzBlockWorker 对象
     * @author Hush.
     * @since 2021/12/15 15:52
     */
    RzBlockWorker selectRzBlockWorker(Long workerId, Integer workerType);

    /**
     * 黑名单员工分页数据
     * @param dto: 检索条件
     * @return com.ruoyi.common.core.page.TableDataInfo
     * @author Hush.
     * @since 2021/12/15 17:16
     */
    List<RzBlockWorker> selectRzBlockWorkerList(RzBlockWorker dto);

    /**
     * 删除黑名单记录
     *
     * @param workerId:员工id
     * @param workerType:员工类型
     * @return int
     * @author Hush.
     * @since 2021/12/16 15:21
     */
    @Delete("delete from rz_block_worker where worker_id = #{workerId} and worker_type = #{workerType}")
    int deleteBlackByWidAndWType(@Param("workerId") Long workerId, @Param("workerType")Integer workerType);
    /**
     * @description:  长期工 离职状态 转正时间自动实现 获取对应的list
     * @author 刘松山
     * @date 2021/12/28 10:22
     *
     */
      List<TermWorkerExcel> selectTermWorkerTask(TermWorker termWorker);
      /**
       * @description:  根据长期工身份证获取长期工考勤的情况
       * @author 刘松山
       * @date 2021/12/29 15:07
       *
       */
      List<TermWorkerExcel> listRegulaTermWorker(List<String> idCardList);

    /**
     * 新增【修改长期工流水】
     *
     * @param list 【请填写功能名称】
     * @return 结果
     */
      int insertTermWorkerModifyLog(List<TermWorkerModifyLog> list);


    /**
     * @description:  查询长期工修改流水
     * @author 刘松山
     * @date 2021/12/31 15:05
     *
     */
    public List<TermWorkerModifyLog> selectTermWorkerModifyLogById(TermWorkerModifyLog t);

    /**
     * @description:  批量修改离职时间
     * @author 刘松山
     * @date 2022/1/4 13:13
     *
     */
    public int updateTermWorkerLeaveTime(Long[] ids);
    /**
     * @description:  查询长期工列表 通过ids列表
     * @author 刘松山
     * @date 2022/1/4 14:46
     *  
     */
    List<TermWorker> listTermWorkerById(Long[] ids);

}
